/*
 * @作者: kerwin
 * @公众号: 大前端私房菜
 */

interface Ifunc {
  getName: () => string;
  getAge: () => number;
}
//  extends是继承父类，只要那个类不是声明为final或者那个类定义为abstract的就能继承，不支持多重继承，但是可以用接口 来实现，这样就要用到implements，继承只能继承一个类，但implements可以实现多个接口，用逗号分开就行了
// 比如
// class A extends B implements C,D,E
class A implements Ifunc {
  getAge() {
    return 10;
  }
  a1() {}

  a2() {}

  getName() {
    return "AAA";
  }
}

class B implements Ifunc {
  getAge() {
    return 100;
  }
  b1() {}

  b2() {}

  getName() {
    return "CCC";
  }
}

class C implements Ifunc {
  getAge() {
    return 100;
  }
  getName() {
    return "CCC";
  }
}

function init(obj: Ifunc) {
  obj.getName();
  obj.getAge();
}
var objA = new A();
var objB = new B();
var objC = new C();

init(objA);
init(objB);
init(objC);
export default {};
